package io;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲输出流写出数据的缓冲区问题
 */
public class FlushDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos =new FileOutputStream("bos.txt");
        BufferedOutputStream bos =new BufferedOutputStream(fos);

        String str ="斑马斑马你不要睡着啦 让我看看你受伤的尾巴";
        byte[] data = str.getBytes(StandardCharsets.UTF_8);
        bos.write(data);

        /*
        * fush()方法:
        * 1)将缓冲区中已经缓存的数据一次性写出
        * 2)flush()方法是所有输出流都具备的方法，因为该方法是在接口Flushable中定义的，
        * 而输出流的超类OutputStream实现了该接口，所有所有输出流都有flush()方法
        * 3)但是除了缓冲输出流以外，其他高级流的flush()方法的作用都是为了调用它所连接的流
        * 的flush()方法，目的是将flush()向下传递，最终传到缓冲输出流上,以做清空缓冲区操作
        * */
        //fos.flush();//没有意义，没有缓冲区
        bos.flush();
        //bos.close(); 最后不用了才可以用
        System.out.println("写出完毕");

    }
}
